package com.giCompiler.business;

import java.util.ArrayList;
import java.util.List;

import com.giCompiler.bean.Usuario;
import com.giCompiler.bean.VinculoUsuarioProjeto;
import com.giCompiler.dao.UsuarioDao;
import com.giCompiler.dao.VinculoUsuarioProjetoDao;
import com.giCompiler.exception.BusinessException;

public class IncluirUsuarioProjetoBusiness {
	public void incluirUsuarioProjetoBusiness(String email, int idProjeto, int idUsuarioLogado) throws BusinessException{
		
		VinculoUsuarioProjeto vup = new VinculoUsuarioProjeto();
		VinculoUsuarioProjetoDao vupd = new VinculoUsuarioProjetoDao();
		Usuario usuario = new Usuario();
		
		int permissao = pergarPermissaoUsuario(idUsuarioLogado, idProjeto);
		usuario = pegarUsuario(email);
		
		
		//5 = Dono do projeto e 4 pode adicionar novas pessoas
		if(permissao == 5 || permissao == 4){
			if(usuario != null){
			
				if(!verificarSeJaCompartilhado(usuario.getIdUsuario(), idProjeto)){
					
					vup.setIdVcUsuProj(-1);
					vup.setIdProjeto(idProjeto);
					vup.setIdUsuario(usuario.getIdUsuario());	
					vup.setPermissao(0);
					vupd.inserir(vup);
					
				}else{
					
					System.out.println("Este usuario ja possui permissao para visualizar o projeto!");
					throw new BusinessException("Este usuario ja possui permissao para visualizar o projeto!");
					
				}
			}else{
								
				System.out.println("Não foi possivel localizar o e-mail fornecido!");
				throw new BusinessException("Não foi possivel localizar o e-mail fornecido!");	
				
			}
		}else{
			
			System.out.println("O usuario não tem permissão para executar está tarefa!");
			throw new BusinessException("O usuario não tem permissão para executar está tarefa!");
			
		}
	}
	
	public Boolean verificarSeJaCompartilhado(int idUsuario, int idProjeto){
		
		if(new VinculoUsuarioProjetoDao().verificarSeExisteCompartilhado(idUsuario, idProjeto).isEmpty())
			return false;
		else
			return true;	
	}
	
	public Usuario pegarUsuario(String email){
		
		UsuarioDao usuarioDao = new UsuarioDao();
		List<Usuario> usuarios = new ArrayList<Usuario>(); 
			
		usuarios = usuarioDao.procurarUsuarioPorEmail(email);
		
		if(usuarios.isEmpty())
			return null;
		else		
			return usuarios.get(0);
	}
	
	public int pergarPermissaoUsuario(int idUsuario, int idProjeto){
		
		List<VinculoUsuarioProjeto> vups = new ArrayList<VinculoUsuarioProjeto>();
		
		VinculoUsuarioProjetoDao vupd = new VinculoUsuarioProjetoDao();
		vups = vupd.pegarVup(idUsuario, idProjeto);
		
		if(vups.isEmpty())
			return -1;
		else
			return vups.get(0).getPermissao();
		
	}
}
